package net.teamclerks.rpgf.scene.map;

import java.util.List;

import net.teamclerks.rpgf.scene.map.cell.Cell;
import net.teamclerks.rpgf.script.director.Director;

/**
 * Map is the basic structure of the world that the player sees.
 * For instance, if a player "zones" into a city, the Map is responsible
 * for all the <code>Cells</code> which the PlayerAvatar can move upon.<br/>
 * Map is also the pseudo-controller of CellActions, which are fired by a
 * cell when a PlayerAvatar is moved onto them.
 * @author msmith
 *
 */
public abstract class Map
{
  /// CONTROL DATA ///
  /**
   * The list of <code>Cell</code> objects which make up this <code>Map</code>.
   */
  protected List<Cell> cells;
  /**
   * The system's Director reference.
   */
  protected Director director;
  
  /// DENY CONSTRUCTOR ///
  private Map(){}
  
  /// PUBLIC CONSTRUCTOR ///
  public Map(Director director)
  {
    this();
    this.director = director;
  }

  /// PUBLIC METHODS ///
  /**
   * Gets the list of Cells associated with this Map.
   * @return the cells
   */
  public final List<Cell> getCells()
  {
    return cells;
  }
  /**
   * Sets the list of Cells associated with this Map.
   * @param cells the cells to set
   */
  public final void setCells(List<Cell> cells)
  {
    this.cells = cells;
  }
}